对于大部分的查询场景中,开发者只是希望能以最快的速度来拼接 Where 条件。而这时如果还手工编写 SqlTree 或者组装 CommonQueryCriteria 会显得比较麻烦。框架对于这种场景,添加了一些扩展方法,来方便开发者快速拼接查询条件。
快速示例 - CommonQueryCriteria 的快速条件拼接
public BookList GetBy(BookSearchCriteria criteria)
{
var cqc = new CommonQueryCriteria();
cqc.AddIf(Book.NameProperty, PropertyOperator.Contains, criteria.BookName);
cqc.AddIf(Book.CodeProperty, PropertyOperator.Contains, criteria.BookCode);
cqc.AddIf(Book.PriceProperty, PropertyOperator.GreaterEqual, criteria.BookPrice);
return this.GetBy(cqc);
}
上述代码中,如果 criteria.BookName 存在值时,则会为 Query 的 Where 中添加上 Book.Name Contains criteria.BookName 这个条件。
快速示例 - SqlTree 的快速条件拼接
using static Rafy.Domain.ORM.Query.FactoryMethods;
[RepositoryQuery]
public virtual BookList GetBy(BookSearchCriteria criteria)
{
var q = Query(this);
q.AddConstraintIf(Book.NameProperty, PropertyOperator.Contains, criteria.BookName);
q.AddConstraintIf(Book.CodeProperty, PropertyOperator.Contains, criteria.BookCode);
q.AddConstraintIf(Book.PriceProperty, PropertyOperator.GreaterEqual, criteria.BookPrice);
return (BookList)this.QueryData(q);
}